import { IParam, EntityBase } from "@/core";
import { IAvueTest } from './interface/i-avue-test';
import AvueTestKeys from './avue-test-keys';

/**
 * avue测试基类
 * 基于template/src/api/{{appEntities}}/{{appEntities}}-base.ts.hbs生成  
 *
 * @export
 * @abstract
 * @class AvueTestBase
 * @extends { EntityBase }
 * @implements { IAvueTest }
 */
export abstract class AvueTestBase extends EntityBase implements IAvueTest {
	/**
	 * 实体名称
	 *
	 * @readonly
	 * @type {string}
	 * @memberof AvueTestBase
	 */
	get srfdename(): string {
		return 'AVUETEST';
	}

	/**
     * 当前实体所有属性
     *
     * @protected
     * @type {string[]}
     * @memberof AvueTestBase
     */
    protected get keys(): string[] {
        return AvueTestKeys;
    }

	/**
	 * Creates an instance of ConstactOppoBase.
	 * @param {*} [data]
	 * @memberof AvueTestBase
	 */
	constructor(data?: any) {
		super();
		this.setData(data);
	}

	/**
	 * 单行文本
	 **/
	singlelinetext?: any;
	
	/**
	 * 评价
	 **/
	rate?: any;
	
	/**
	 * 滑块
	 **/
	slider?: any;
	
	/**
	 * 单选列表
	 **/
	checkbox?: any;
	
	/**
	 * 选项框列表
	 **/
	checkboxlist?: any;
	
	/**
	 * 下拉列表框标准
	 **/
	dropdownlist?: any;
	
	/**
	 * 下拉级联选择
	 **/
	dropdownlistcascader?: any;
	
	/**
	 * 下拉树
	 **/
	dropdownlisttree?: any;
	
	/**
	 * 数值框
	 **/
	inputnumber?: any;
	
	/**
	 * 地图选择
	 **/
	mapselect?: any;
	
	/**
	 * 地图经度
	 **/
	maplongitude?: any;
	
	/**
	 * 地图纬度
	 **/
	maplatitude?: any;
	
	/**
	 * 多行文本
	 **/
	mutlilinetext?: any;
	
	/**
	 * 密码框
	 **/
	passwordtext?: any;
	
	/**
	 * 滑块范围
	 **/
	sliderrange?: any;
	
	/**
	 * 单选框按钮
	 **/
	checkboxbutton?: any;
	
	/**
	 * 选项框按钮
	 **/
	checkboxlistbutton?: any;
	
	/**
	 * 多选下拉
	 **/
	mutlidropdownlist?: any;
	
	/**
	 * 多选下拉级联
	 **/
	mutlidropdownlistcascader?: any;
	
	/**
	 * 多选下拉树
	 **/
	mutlidropdownlisttree?: any;
	
	/**
	 * 级联一层
	 **/
	cascaderone?: any;
	
	/**
	 * 级联二层
	 **/
	cascadertwo?: any;
	
	/**
	 * 级联树
	 **/
	cascadertree?: any;
	
	/**
	 * 级联选择
	 **/
	cascaderselect?: any;
	
	/**
	 * 属性
	 **/
	mutlicascaderselect?: any;
	
	/**
	 * 多选树
	 **/
	mutlicascadertree?: any;
	
	/**
	 * 字符串数组
	 **/
	stringarray?: any;
	
	/**
	 * URL数组
	 **/
	urlarray?: any;
	
	/**
	 * 图片数组
	 **/
	imagearray?: any;
	
	/**
	 * 数值数组
	 **/
	numberarray?: any;
	
	/**
	 * 时间范围
	 **/
	timerange?: any;
	
	/**
	 * 日期范围
	 **/
	daterange?: any;
	
	/**
	 * 数值范围
	 **/
	numberrange?: any;
	
	/**
	 * 启动时间
	 **/
	starttime?: any;
	
	/**
	 * 结束时间
	 **/
	endtime?: any;
	
	/**
	 * 结束日期
	 **/
	enddate?: any;
	
	/**
	 * 开始日期
	 **/
	startdate?: any;
	
	/**
	 * 开始数值
	 **/
	startnumber?: any;
	
	/**
	 * 结束数值
	 **/
	endnumber?: any;
	
	/**
	 * 孩子数据
	 **/
	avuechildfours?: any;
	
	/**
	 * 开关
	 **/
	switchfield?: any;
	
	/**
	 * 整型数组
	 **/
	intarray?: any;
	
	get srfmajortext(): string {
		return this.avuetestname;
	}

	set srfmajortext(val: string) {
		this.avuetestname = val;
	}
	/**
	 * avue测试名称
	 **/
	avuetestname?: any;
	
	get srfkey(): string {
		return this.avuetestid;
	}

	set srfkey(val: string) {
		this.avuetestid = val;
	}

	/**
	 * avue测试标识
	 **/
	avuetestid?: any;
	
	/**
	 * 建立人
	 **/
	createman?: any;
	
	/**
	 * 建立时间
	 **/
	createdate?: any;
	
	/**
	 * 更新时间
	 **/
	updatedate?: any;
	
	/**
	 * 更新人
	 **/
	updateman?: any;
	

	/**
	 * 重置实体数据
	 *
	 * @param {IParam} [data={}]
	 * @memberof AvueTestBase
	 */
	reset(data: IParam = {}): void {
		super.reset(data);
		this.avuetestname = data.avuetestname || data.srfmajortext;
		this.avuetestid = data.avuetestid || data.srfkey;
	}
}